[INFO] cloning repository https://github.com/ndunnett/codecrafters-interpreter-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ndunnett/codecrafters-interpreter-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fndunnett%2Fcodecrafters-interpreter-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fndunnett%2Fcodecrafters-interpreter-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 52273631c2fe392616908bab2701c88a50e9a321
[INFO] testing ndunnett/codecrafters-interpreter-rust against master#1f7f8ea0721a3b1eb73e6c6d25cccb371434b320 for pr-154065-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fndunnett%2Fcodecrafters-interpreter-rust" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ndunnett/codecrafters-interpreter-rust
[INFO] finished tweaking git repo https://github.com/ndunnett/codecrafters-interpreter-rust
[INFO] tweaked toml for git repo https://github.com/ndunnett/codecrafters-interpreter-rust written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ndunnett/codecrafters-interpreter-rust on toolchain 1f7f8ea0721a3b1eb73e6c6d25cccb371434b320
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ndunnett/codecrafters-interpreter-rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] fddf0950696726f824c22bf403ca5794a135da61d73bc33cc38b70e2f148d528
[INFO] running `Command { std: "docker" "start" "-a" "fddf0950696726f824c22bf403ca5794a135da61d73bc33cc38b70e2f148d528", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fddf0950696726f824c22bf403ca5794a135da61d73bc33cc38b70e2f148d528", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fddf0950696726f824c22bf403ca5794a135da61d73bc33cc38b70e2f148d528", kill_on_drop: false }`
[INFO] [stdout] fddf0950696726f824c22bf403ca5794a135da61d73bc33cc38b70e2f148d528
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3cbf160e1509cbcaf96a29578d465e577d429b3acb1718672c8d2e429d0bbc7b
[INFO] running `Command { std: "docker" "start" "-a" "3cbf160e1509cbcaf96a29578d465e577d429b3acb1718672c8d2e429d0bbc7b", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.75
[INFO] [stderr]    Compiling thiserror v1.0.63
[INFO] [stderr]    Compiling bytes v1.7.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.63
[INFO] [stderr]    Compiling codecrafters-interpreter v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/parsing.rs:107:13
[INFO] [stdout]     |
[INFO] [stdout] 107 |     fn peek(&self) -> &Token {
[INFO] [stdout]     |             ^^^^^     ^^^^^^
[INFO] [stdout]     |             |         ||
[INFO] [stdout]     |             |         |the same lifetime is hidden here
[INFO] [stdout]     |             |         the same lifetime is elided here
[INFO] [stdout]     |             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 107 |     fn peek(&self) -> &Token<'_> {
[INFO] [stdout]     |                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/parsing.rs:111:17
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn previous(&self) -> &Token {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^
[INFO] [stdout]     |                 |         ||
[INFO] [stdout]     |                 |         |the same lifetime is hidden here
[INFO] [stdout]     |                 |         the same lifetime is elided here
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn previous(&self) -> &Token<'_> {
[INFO] [stdout]     |                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/parsing.rs:121:16
[INFO] [stdout]     |
[INFO] [stdout] 121 |     fn consume(&mut self, type_: &TokenType) -> Option<&Token> {
[INFO] [stdout]     |                ^^^^^^^^^                               ^^^^^^
[INFO] [stdout]     |                |                                       ||
[INFO] [stdout]     |                |                                       |the same lifetime is hidden here
[INFO] [stdout]     |                the lifetime is elided here             the same lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 121 |     fn consume(&mut self, type_: &TokenType) -> Option<&Token<'_>> {
[INFO] [stdout]     |                                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.63s
[INFO] running `Command { std: "docker" "inspect" "3cbf160e1509cbcaf96a29578d465e577d429b3acb1718672c8d2e429d0bbc7b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3cbf160e1509cbcaf96a29578d465e577d429b3acb1718672c8d2e429d0bbc7b", kill_on_drop: false }`
[INFO] [stdout] 3cbf160e1509cbcaf96a29578d465e577d429b3acb1718672c8d2e429d0bbc7b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2e5a3a4a472cf4afce5388c692656498ce73d2cc2ed3efeea967b16810ab4e1c
[INFO] running `Command { std: "docker" "start" "-a" "2e5a3a4a472cf4afce5388c692656498ce73d2cc2ed3efeea967b16810ab4e1c", kill_on_drop: false }`
[INFO] [stderr]    Compiling codecrafters-interpreter v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/parsing.rs:107:13
[INFO] [stdout]     |
[INFO] [stdout] 107 |     fn peek(&self) -> &Token {
[INFO] [stdout]     |             ^^^^^     ^^^^^^
[INFO] [stdout]     |             |         ||
[INFO] [stdout]     |             |         |the same lifetime is hidden here
[INFO] [stdout]     |             |         the same lifetime is elided here
[INFO] [stdout]     |             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 107 |     fn peek(&self) -> &Token<'_> {
[INFO] [stdout]     |                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/parsing.rs:111:17
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn previous(&self) -> &Token {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^
[INFO] [stdout]     |                 |         ||
[INFO] [stdout]     |                 |         |the same lifetime is hidden here
[INFO] [stdout]     |                 |         the same lifetime is elided here
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn previous(&self) -> &Token<'_> {
[INFO] [stdout]     |                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/parsing.rs:121:16
[INFO] [stdout]     |
[INFO] [stdout] 121 |     fn consume(&mut self, type_: &TokenType) -> Option<&Token> {
[INFO] [stdout]     |                ^^^^^^^^^                               ^^^^^^
[INFO] [stdout]     |                |                                       ||
[INFO] [stdout]     |                |                                       |the same lifetime is hidden here
[INFO] [stdout]     |                the lifetime is elided here             the same lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 121 |     fn consume(&mut self, type_: &TokenType) -> Option<&Token<'_>> {
[INFO] [stdout]     |                                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.09s
[INFO] running `Command { std: "docker" "inspect" "2e5a3a4a472cf4afce5388c692656498ce73d2cc2ed3efeea967b16810ab4e1c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2e5a3a4a472cf4afce5388c692656498ce73d2cc2ed3efeea967b16810ab4e1c", kill_on_drop: false }`
[INFO] [stdout] 2e5a3a4a472cf4afce5388c692656498ce73d2cc2ed3efeea967b16810ab4e1c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 5d4219a3247a580ecaacca02a38fd512d2aa3e0f141787b86ed33940cadcb037
[INFO] running `Command { std: "docker" "start" "-a" "5d4219a3247a580ecaacca02a38fd512d2aa3e0f141787b86ed33940cadcb037", kill_on_drop: false }`
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/parsing.rs:107:13
[INFO] [stderr]     |
[INFO] [stderr] 107 |     fn peek(&self) -> &Token {
[INFO] [stderr]     |             ^^^^^     ^^^^^^
[INFO] [stderr]     |             |         ||
[INFO] [stderr]     |             |         |the same lifetime is hidden here
[INFO] [stderr]     |             |         the same lifetime is elided here
[INFO] [stderr]     |             the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 107 |     fn peek(&self) -> &Token<'_> {
[INFO] [stderr]     |                             ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/parsing.rs:111:17
[INFO] [stderr]     |
[INFO] [stderr] 111 |     fn previous(&self) -> &Token {
[INFO] [stderr]     |                 ^^^^^     ^^^^^^
[INFO] [stderr]     |                 |         ||
[INFO] [stderr]     |                 |         |the same lifetime is hidden here
[INFO] [stderr]     |                 |         the same lifetime is elided here
[INFO] [stderr]     |                 the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 111 |     fn previous(&self) -> &Token<'_> {
[INFO] [stderr]     |                                 ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/parsing.rs:121:16
[INFO] [stderr]     |
[INFO] [stderr] 121 |     fn consume(&mut self, type_: &TokenType) -> Option<&Token> {
[INFO] [stderr]     |                ^^^^^^^^^                               ^^^^^^
[INFO] [stderr]     |                |                                       ||
[INFO] [stderr]     |                |                                       |the same lifetime is hidden here
[INFO] [stderr]     |                the lifetime is elided here             the same lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 121 |     fn consume(&mut self, type_: &TokenType) -> Option<&Token<'_>> {
[INFO] [stderr]     |                                                              ++++
[INFO] [stderr] 
[INFO] [stderr] warning: `codecrafters-interpreter` (bin "codecrafters-interpreter" test) generated 3 warnings (run `cargo fix --bin "codecrafters-interpreter" -p codecrafters-interpreter --tests` to apply 3 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.02s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/codecrafters_interpreter-10548bea52763f92)
[INFO] [stdout] 
[INFO] [stdout] running 56 tests
[INFO] [stdout] test evaluation::control_flow_tests::else_statements ... ok
[INFO] [stdout] test evaluation::control_flow_tests::else_if_statements ... ok
[INFO] [stdout] test evaluation::control_flow_tests::for_statements ... ok
[INFO] [stdout] test evaluation::control_flow_tests::logical_and ... ok
[INFO] [stdout] test evaluation::control_flow_tests::nested_if_statements ... ok
[INFO] [stdout] test evaluation::control_flow_tests::logical_or ... ok
[INFO] [stdout] test evaluation::eval_tests::arithmetic_1 ... ok
[INFO] [stdout] test evaluation::control_flow_tests::if_statements ... ok
[INFO] [stdout] test evaluation::control_flow_tests::while_statements ... ok
[INFO] [stdout] test evaluation::eval_tests::error_unary ... ok
[INFO] [stdout] test evaluation::eval_tests::arithmetic_2 ... ok
[INFO] [stdout] test evaluation::eval_tests::booleans_and_nil ... ok
[INFO] [stdout] test evaluation::eval_tests::error_binary_2 ... ok
[INFO] [stdout] test evaluation::eval_tests::error_relational ... ok
[INFO] [stdout] test evaluation::eval_tests::parentheses ... ok
[INFO] [stdout] test evaluation::eval_tests::relational_operators ... ok
[INFO] [stdout] test evaluation::eval_tests::strings_and_numbers ... ok
[INFO] [stdout] test evaluation::eval_tests::equality_operators ... ok
[INFO] [stdout] the expression below is invalid
[INFO] [stdout] 79baz
[INFO] [stdout] 22
[INFO] [stdout] test evaluation::state_tests::assignment_operation ... ok
[INFO] [stdout] test evaluation::eval_tests::error_binary_1 ... ok
[INFO] [stdout] test evaluation::state_tests::block_syntax ... ok
[INFO] [stdout] test evaluation::state_tests::print ... ok
[INFO] [stdout] test evaluation::eval_tests::unary_operators ... ok
[INFO] [stdout] test evaluation::state_tests::declare_variables ... ok
[INFO] [stdout] test parsing::expr_tests::arithmetic_1 ... ok
[INFO] [stdout] test evaluation::state_tests::expression_statements ... ok
[INFO] [stdout] test evaluation::state_tests::print_multiple ... ok
[INFO] [stdout] test evaluation::state_tests::redeclare_variables ... ok
[INFO] [stdout] test evaluation::eval_tests::string_concatenation ... ok
[INFO] [stdout] test evaluation::state_tests::initialise_variables ... ok
[INFO] [stdout] test evaluation::state_tests::var_runtime_errors ... ok
[INFO] [stdout] test parsing::expr_tests::equality ... ok
[INFO] [stdout] test parsing::expr_tests::string_literals ... ok
[INFO] [stdout] test parsing::expr_tests::number_literals ... ok
[INFO] [stdout] test parsing::expr_tests::syntactic_errors ... ok
[INFO] [stdout] test scanning::tests::division_and_comments ... ok
[INFO] [stdout] test scanning::tests::lexical_errors ... ok
[INFO] [stdout] test scanning::tests::identifiers ... ok
[INFO] [stdout] test scanning::tests::negation_and_inequality ... ok
[INFO] [stdout] test parsing::expr_tests::comparison ... ok
[INFO] [stdout] test scanning::tests::assignment_and_equality ... ok
[INFO] [stdout] test parsing::expr_tests::parentheses ... ok
[INFO] [stdout] test parsing::expr_tests::unary_operators ... ok
[INFO] [stdout] test scanning::tests::braces ... ok
[INFO] [stdout] test scanning::tests::number_literals ... ok
[INFO] [stdout] test scanning::tests::multiline_errors ... ok
[INFO] [stdout] test parsing::stmt_tests::for_if_syntax ... ok
[INFO] [stdout] test scanning::tests::parentheses ... ok
[INFO] [stdout] inner hello
[INFO] [stdout] outer hello
[INFO] [stdout] test scanning::tests::whitespace ... ok
[INFO] [stdout] test scanning::tests::relational_operators ... ok
[INFO] [stdout] test parsing::expr_tests::arithmetic_2 ... ok
[INFO] [stdout] test parsing::expr_tests::booleans_and_nil ... ok
[INFO] [stdout] test parsing::stmt_tests::block_syntax ... ok
[INFO] [stdout] test scanning::tests::other_single_chars ... ok
[INFO] [stdout] test evaluation::state_tests::scopes ... ok
[INFO] [stdout] test scanning::tests::string_literals ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 56 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "5d4219a3247a580ecaacca02a38fd512d2aa3e0f141787b86ed33940cadcb037", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5d4219a3247a580ecaacca02a38fd512d2aa3e0f141787b86ed33940cadcb037", kill_on_drop: false }`
[INFO] [stdout] 5d4219a3247a580ecaacca02a38fd512d2aa3e0f141787b86ed33940cadcb037
